package cn.swu.lzr;

import java.awt.image.ImageProducer;
import java.io.*;
import java.net.URL;
import java.nio.file.Files;
import java.util.*;

public class Main {
    public static void main(String[] args) {
        //在c盘根目录创建一个文件夹images
        File f1 = new File("C://images");
        try{
            //调用pagereader类来读网上的文本文件
            new Pagereader().Pagereader();
            //创建list列表对五个图片的url地址进行储存
            List<String> url = new ArrayList<>();
            //获取文件的url地址
            //UrlGetter类中的UrlGetter函数中的参数i是可以用来读取文本文件中第i行的数据，可以用
            for (int i = 0; i < 5; i++) {
                url.add(new UrlGetter().UrlGetter(i));
            }

            //文件夹名称拼接
            List<String> dirname = new ArrayList<>();//文件夹名称存储列表

            //将文件url地址按照/分隔
            for (int i = 0; i < 5; i++) {
                String[] name1 = url.get(i).split("/");
                //拼接成字符串
                String dirname1 = name1[2] + "/" + name1[3] + "/" + name1[4] + "/";
                //加入到文件夹名称存储列表中,dirname列表即是我们需要的文件路径名
                dirname.add(dirname1);
            }

            //创建一个map集合，用来存储文件名和文件大小，并且treemap会将数据进行键值进行排序
            Map<Integer,String>map = new TreeMap<>();

            //此循环用于
            for(int i = 0; i < 5; i++) {

                File dir = new File("C:/images/"+dirname.get(i));
                dir.mkdirs();

                //创建目标图片的URL对象
                URL path = new URL(url.get(i));

                //将复制目标图片的路径加名称存储到变量name中，方便存储到map表中
                String name = "C:/images/"+dirname.get(i)+"01.jpg";

                //创建输入流和输出流
                InputStream inputStream = path.openStream();
                OutputStream outputStream = new FileOutputStream(name);

                //进行文件的复制
                byte[] buffer =new byte[1024];
                int len;
                while ((len = inputStream.read(buffer)) != -1)
                {
                    outputStream.write(buffer,0,len);
                }

                //将文件的大小和文件的名称存到map中，从而进行排序
                File DirPic = new File(name);
                map.put((int)DirPic.length(),dirname.get(i)+"01.jpg");

                outputStream.close();
                inputStream.close();
            }

           //将文件长度存到一个Set集合里
            Set<Integer>length = map.keySet();
            //将set集合的数据存到数组里，方便对各个元素进行取值
           Object[] leng = length.toArray();
            //将文件名存到一个collection集合里
            Collection<String> name = map.values();
            //将set集合的数据存到数组里，方便对各个元素进行取值
            Object[] name2 = name.toArray();

          //在要求路径创建txt文件，然后将排过序的文件信息写入该txt文件中
            FileWriter sort = new FileWriter("C:/images/images-sorted.txt");
            for (int i = 0; i < 5; i++) {
                int a =  (int)leng[i];
                sort.write(a+"");
                sort.write("     ");
                sort.write((String)name2[i]);
                sort.write("\n");

            }
            sort.close();

            //删除在pagereder里创建的文本文件test
            File file1 = new File("test.txt");
            file1.delete();


        }catch (Exception e){
            e.printStackTrace();
        }

    }
}
